#include <fcntl.h>
#include <signal.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>

#include <cstdlib>
#include <iostream>
using namespace std;

void signal_handler(int signum) {
  cout << "get a signal : " << signum << endl;
  sleep(1);
}


int main()
{
  signal(2,SIG_IGN);
  return 0;
}




// int main(){
//   // int a = 10;
//   // a/=0;
//   return 0;
// }




// int main() {
//   pid_t id = fork();
//   if (id == 0) {
//     // child
//     int cnt = 3;
//     while (cnt) {
//       sleep(1);
//       cout << "child process : " << getpid() << endl;
//     }
//   }
//   // parent
//   int status = 0;
//   pid_t rid = waitpid(id, &status, 0);
//   if (id == rid) {
//     printf(
//         "child quit sucess ,\nrid : %d\nexit code : %d\nexit signal : %d\ncore "
//         "dump : %d\n",
//         rid, ((status >> 8) & 0xFF), (status & 0x8F), ((status >> 7) & 1));
//   }
//   return 0;
// }

// int main() {
//   pid_t id = fork();
//   if (id == 0) {
//     // child
//     int cnt = 3;
//     while (--cnt) {
//       sleep(1);
//       cout << "child process : " << getpid() << endl;
//     }
//   }
//   // parent
//   int status = 0;
//   pid_t rid = waitpid(id, &status, 0);
//   if (id == rid) {
//     printf(
//         "child quit sucess ,\nrid : %d\nexit code : %d\nexit signal: %d\n",
//         rid, ((status >> 8) & 0xFF), (status & 0x8F));
//   }
//   return 0;
// }

// int main() {
//   signal(SIGALRM, signal_handler);
//   alarm(5);
//   while (1) {
//     cout << "run ..." << endl;
//     sleep(1);
//   }
//   return 0;
// }

// int main() {
//   for (int i = 1; i <= 31; ++i) {
//     signal(i, signal_handler);
//   }
//   char buff[1024] = {0};
//   ssize_t ret = read(4, buff, sizeof(buff));
//   return 0;
// }

// int main() {
//   // signal(SIGPIPE, signal_handler);
//   int pipefd[2];
//   int n = pipe(pipefd);
//   if (n < 0) {
//     cerr << "pipe" << endl;
//     exit(1);
//   }

//   pid_t id = fork();
//   if (id == 0) {
//     // child r
//     close(pipefd[1]);
//     int cnt = 3;
//     char str[1024] = {0};
//     while (--cnt) {
//       read(pipefd[0], str, sizeof(str));
//       sleep(1);
//     }
//   }
//   // parent w
//   close(pipefd[0]);
//   while (1) {
//     write(pipefd[1], "c", 1);
//     sleep(1);
//   }
//   return 0;
// }

// int main() {
//   signal(SIGSEGV, signal_handler);
//   cout << "point error before" << endl;
//   sleep(1);
//   int *n = nullptr;
//   *n = 100;
//   cout << "point error after" << endl;
//   sleep(1);

//   return 0;
// }

// int main() {
//   // signal(SIGFPE, signal_handler);
//   cout << "div before" << endl;
//   sleep(1);
//   int a = 10;
//   a /= 0;
//   cout << "div after" << endl;
//   sleep(1);

//   return 0;
// }

// int main() {
//   //   signal(SIGINT, signal_handler);
//   // for (int i = 1; i <= 31; ++i) {
//   //   signal(i, signal_handler);
//   // }

//   // while (1) {
//   //   cout << "I am a crazy Process , PID : " << getpid() << endl;
//   //   sleep(1);
//   // }

//   // signal(SIGINT, signal_handler);
//   // int n = 4;
//   // while (n--) {
//   //   cout << "I am a crazy Process , PID : " << getpid() << endl;
//   //   sleep(1);
//   // }
//   // raise(2);

//   signal(SIGABRT, signal_handler);
//   int n = 0;
//   while (++n) {
//     cout << "I am a crazy Process , PID : " << getpid() << endl;
//     sleep(1);
//     if (n % 5 == 0) {
//       abort();
//     }
//   }
//   return 0;
// }